/**
 * @file mcu_led.h
 * @brief MCU状态LED控制类头文件 - 使用FastLED库
 * @version 1.0
 * @author Craft
 */

#ifndef MCU_LED_H
#define MCU_LED_H

#include <Arduino.h>
#include <FastLED.h>

// MCU状态LED配置
#define MCU_STATUS_LED_PIN 48
#define MCU_LED_COUNT 1               // 只有一个LED
#define MCU_LED_FLASH_DURATION 50    // 亮起持续时间：0.2秒 = 200ms (可调整)
#define MCU_LED_CYCLE_INTERVAL 3000   // 循环间隔：3秒 = 3000ms (可调整)

/**
 * @brief MCU状态LED控制类 - 使用FastLED库
 * 
 * 实现2秒循环，每次亮0.1秒后立即熄灭的效果
 */
class MCULEDController {
public:
    static MCULEDController& instance();
    
    bool initialize();
    void update();
    void startFlashCycle();  // 开始闪烁循环
    void stopFlashCycle();   // 停止闪烁循环
    
    bool isInitialized() const { return initialized_; }
    bool isFlashing() const { return flashEnabled_; }

private:
    MCULEDController();
    ~MCULEDController() = default;
    
    MCULEDController(const MCULEDController&) = delete;
    MCULEDController& operator=(const MCULEDController&) = delete;
    
    void turnOn();
    void turnOff();
    
    static MCULEDController* instance_;
    
    CRGB mcuLed_[MCU_LED_COUNT];  // FastLED数组
    bool initialized_;
    bool flashEnabled_;      // 是否启用闪烁循环
    bool isOn_;             // 当前LED状态
    uint32_t cycleStartTime_; // 当前循环开始时间
};

// 全局接口函数
bool initMCULED();
void updateMCULED();
void setMCULEDLowPowerStatus();  // 启动低功耗状态的循环闪烁
void stopMCULEDFlash();          // 停止闪烁

#endif // MCU_LED_H